package com.ruihu.admin.module.business.tasknode.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruihu.admin.module.business.tasknode.domain.dto.TaskNodeFileDTO;
import com.ruihu.admin.module.business.tasknode.domain.dto.TaskNodeFileQueryDTO;
import com.ruihu.admin.module.business.tasknode.domain.entity.TaskNodeFileEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * [ 任务环节附件表 ]
 *
 * @author Tony
 * @version 1.0
 * @company 瑞虎（南京）信息技术有限公司
 * @copyright (c)  瑞虎（南京）信息技术有限公司Inc. All rights reserved.
 * @date 2022-08-30 20:35:38
 * @since JDK1.8
 */
@Mapper
@Component
public interface TaskNodeFileDao extends BaseMapper<TaskNodeFileEntity> {

    /**
     * 分页查询
     * @param queryDTO
     * @return TaskNodeFileVO
    */
    List<TaskNodeFileDTO> queryByPage(Page page, @Param("queryDTO") TaskNodeFileQueryDTO queryDTO);

    /**
     * 不分页查询
     * @param queryDTO
     * @return TaskNodeFileVO
     */
    List<TaskNodeFileDTO> queryList(@Param("queryDTO") TaskNodeFileQueryDTO queryDTO);


    /**
     * 根据id删除
     * @param id
     * @return
    */
    void deleteById(@Param("id")Long id);

    /**
     * 根据SubTaskId删除
     * @param subTaskId
     * @return
     */
    void deleteBySubTaskId(@Param("subTaskId") Long subTaskId);

    /**
     * 删除
     * @return
     */
    void delete(@Param("subTaskId") Long subTaskId, @Param("subTaskNodeInstId") Long subTaskNodeInstId, @Param("fileId") Long fileId);

    /**
     * 根据元素实例ID删除
     */
    void deleteByNodeProcessRelationId(@Param("nodeProcessRelationId") Long nodeProcessRelationId);

    /**
      * 根据ID更新实体（忽略空值）
      */
    int updateByIdIgnoreEmptyValue(@Param("entity") TaskNodeFileEntity entity);

    /**
     * 根据ID更新实体
     */
    int updateById(@Param("entity") TaskNodeFileEntity entity);

    /**
     * 根据ID更新实体
     */
    int updateById2(TaskNodeFileEntity entity);
}
